A machine-readable graphical code (“graphical code”) is a graphical representation of information that consists of multiple graphical code elements having different light reflective or light emissive properties. Examples of different types of graphical codes include bar codes, data matrix codes, MaxiCodes, and so forth. Graphical codes have become widely used in many commercial environments, such as point-of-sale stations in retail stores and supermarkets, inventory and document tracking, and the like.
Devices for identifying or extracting information from graphical codes are generally referred to as graphical code readers. Graphical code readers typically include one or more light sources for illuminating a graphical code. Light is reflected from the graphical code toward the graphical code reader. A lens within the graphical code reader focuses an image of the graphical code onto an image sensor. Pixels within the image sensor are read electronically to provide a two-dimensional array of image data corresponding to the graphical code. A decoder then processes the image data and extracts the information contained in the graphical code.
Different types of graphical codes include different types of graphical code elements. For example, bar codes include variable-width rectangular bars. Data matrix codes include square data modules. MaxiCodes include a central finder pattern and a grid of hexagons surrounding the central finder pattern.
Different types of graphical codes may vary in size. For example, bar codes are typically larger in size than data matrix codes. The graphical code elements within different types of graphical codes may also vary in size. For example, the variable-width rectangular bars in bar codes are typically larger than the square data modules in data matrix codes or the hexagons in MaxiCodes.
One characteristic which affects the performance of graphical code readers is the position of the lens relative to the graphical code and the image sensor. Moving the lens closer to the graphical code and farther away from the image sensor increases the magnification of the graphical code elements on the image sensor, which increases the resolution and decreases the field of view of the image that is formed. Conversely, moving the lens closer to the image sensor and farther away from the graphical code decreases the magnification of the graphical code elements on the image sensor, which decreases the resolution and increases the field of view of the resulting image.
Lens arrangements that are capable of providing high resolution images are optimized for reading graphical codes with relatively small graphical code elements, while lens arrangements that are capable of providing images that have a large field of view are optimized for reading large graphical codes. Sometimes, however, it may be desirable to read both small, high-density graphical codes and large graphical codes. Accordingly, benefits may be realized by a versatile graphical code reader that is capable of reading both large graphical codes and graphical codes with small graphical code elements. Benefits may also be realized by improved decoding methods in such a versatile graphical code reader.